# coding=UTF-8

# 类似于map结构

d = {"key1": 99, "key2": 88, "key3": 111}
print(d["key3"])

# 一个key对应一个value值，value值可以被替换
d["key3"] = 10000
print(d["key3"])

# 方式一：判断某个key是否存在dict字典中
print("key1" in d)

if "key2" in d:
    print("key2存在于字典中：", d["key2"])
else:
    print("bucunzai")

# 方式二
print(d.get("key2"))
if d.get("key2"):
    print("key2存在，值：", d["key2"])
else:
    print("bucunzai")

'''
请务必注意，dict内部存放的顺序和key放入的顺序是没有关系的。

和list比较，dict有以下几个特点：

查找和插入的速度极快，不会随着key的增加而增加；
需要占用大量的内存，内存浪费多。
而list相反：

查找和插入的时间随着元素的增加而增加；
占用空间小，浪费内存很少。
所以，dict是用空间来换取时间的一种方法。

dict可以用在需要高速查找的很多地方，在Python代码中几乎无处不在，正确使用dict非常重要，需要牢记的第一条就是dict的key必须是不可变对象。

这是因为dict根据key来计算value的存储位置，如果每次计算相同的key得出的结果不同，那dict内部就完全混乱了。这个通过key计算位置的算法称为哈希算法（Hash）。

要保证hash的正确性，作为key的对象就不能变。在Python中，字符串、整数等都是不可变的，因此，可以放心地作为key。而list是可变的，就不能作为key：
'''

'''
set
set和dict类似，也是一组key的集合，但不存储value。由于key不能重复，所以，在set中，没有重复的key。

要创建一个set，需要提供一个list作为输入集合：
'''
s = set(["1211", "2122", "333", "333"])
print(s)

# 添加元素
s.add("12221212")
print(s)

# 移除元素
s.remove("333")
print(s)

# set可以取交集、并集
# 交集
s2 = set(["1211", "555"])
print(s & s2)

# 并集
print(s | s2)
